Java Swing ์ด๋ฒคํธ ์ฒ๋ฆฌ: ์ฌ์ฉ์์์ ์ํธ์์ฉ ์ดํดํ๊ธฐ
์๋ฐ ์ค์(Java Swing) ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฒํผ ํด๋ฆญ, ํค๋ณด๋ ์ ๋ ฅ ๋ฑ ์ฌ์ฉ์์ ๋์์ ์ฒ๋ฆฌํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋(Event Listener) ๋ชจ๋ธ์ ๋๋ค. 2026๋ ๊ธฐ์ค ํ๋์ ์ธ ์๋ฐ ๋ฌธ๋ฒ(๋๋ค์ ๋ฑ)์ ํ์ฉํ ํจ์จ์ ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
1. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ชจ๋ธ์ ๊ตฌ์กฐ
์ค์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ '๋ฐ์์ง(Source)', '์ด๋ฒคํธ ๊ฐ์ฒด(Event Object)', **'๋ฆฌ์ค๋(Listener)'**์ ์ธ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- Source: ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ์ปดํฌ๋ํธ (์:
JButton) - Event Object: ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด (์:
ActionEvent) - Listener: ์ด๋ฒคํธ๋ฅผ ๊ฐ์ํ๊ณ ์๋ค๊ฐ ๋ฐ์ ์ ๋ก์ง์ ์ํํ๋ ์ธํฐํ์ด์ค (์:
ActionListener)
2. ์ฃผ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
โ ๋ฒํผ ํด๋ฆญ ์ฒ๋ฆฌ (ActionListener)
๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๋ฐฉ์์ ๋๋ค. ๊ณผ๊ฑฐ์๋ ์ต๋ช ํด๋์ค๋ฅผ ์ผ์ง๋ง, ํ์ฌ๋ ๋๋ค์์ ์ฌ์ฉํ์ฌ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํฉ๋๋ค.
JButton button = new JButton("ํด๋ฆญํ์ธ์");
// ๋๋ค์์ ์ด์ฉํ ์ด๋ฒคํธ ์ฒ๋ฆฌ
button.addActionListener(e -> {
System.out.println("๋ฒํผ์ด ํด๋ฆญ๋์์ต๋๋ค!");
JOptionPane.showMessageDialog(null, "์๋
ํ์ธ์!");
});โก ๋ง์ฐ์ค ๋ฐ ํค๋ณด๋ ์ด๋ฒคํธ
ํน์ ์ปดํฌ๋ํธ ์๋ก ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋ ํค๋ณด๋ ํค๋ฅผ ๋๋ฅด๋ ๋์์ ๊ฐ์งํฉ๋๋ค.
- MouseListener:
mouseClicked,mouseEntered,mouseExited๋ฑ ์ฒ๋ฆฌ. - KeyListener:
keyPressed,keyReleased๋ฑ ์ฒ๋ฆฌ.
Tip: ๋ชจ๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ๊ธฐ ๋ฒ๊ฑฐ๋กญ๋ค๋ฉด
MouseAdapter๋KeyAdapter๋ฅผ ์์๋ฐ์ ํ์ํ ๋ฉ์๋๋ง ๊ตฌํํ ์ ์์ต๋๋ค.
3. ์ค์: ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ ์ฃผ์์ฌํญ (EDT์ ์ค๋ ๋)
์ง๋ ๊ธ์์ ๊ฐ์กฐํ๋ฏ, ์ค์์ ์ฑ๊ธ ์ค๋ ๋ ๋ชจ๋ธ์ ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ด๋ถ์ ์ฝ๋๋ **EDT(Event Dispatch Thread)**์์ ์คํ๋ฉ๋๋ค.
- ๊ธ์ง ์ฌํญ: ๋ฆฌ์ค๋ ๋ด๋ถ์์ ๋คํธ์ํฌ ํต์ , ๋์ฉ๋ ํ์ผ ์ฝ๊ธฐ ๋ฑ '๋ฌด๊ฑฐ์ด ์์ '์ ์ง์ ์ํํ๋ฉด ์ ๋ฉ๋๋ค. ์์ ์ด ๋๋ ๋๊น์ง ํ๋ฉด์ด ๋ฉ์ถ๊ฒ ๋ฉ๋๋ค.
- ํด๊ฒฐ ๋ฐฉ๋ฒ: ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์
์
SwingWorkerํด๋์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ณ๋์ ์ค๋ ๋์์ ์ฒ๋ฆฌํ ๋ค, UI ์ ๋ฐ์ดํธ๋ง ๋ค์SwingUtilities.invokeLater()๋ก ๋๊ฒจ์ผ ํฉ๋๋ค.
button.addActionListener(e -> {
new Thread(() -> {
// 1. ๋ฌด๊ฑฐ์ด ์์
์ํ (์: DB ์กฐํ)
String data = fetchDataFromDB();
// 2. UI ์
๋ฐ์ดํธ๋ ๋ค์ EDT์์ ์คํ
SwingUtilities.invokeLater(() -> {
label.setText(data);
});
}).start();
});4. ์์ฝ
- ๊ฐ๋จํ ์ก์
์ ๋๋ค์๊ณผ
ActionListener๋ก ์ฒ๋ฆฌํฉ๋๋ค. - ๋ณต์กํ ๋ง์ฐ์ค/ํค๋ณด๋ ๋์์ Adapter ํด๋์ค๋ฅผ ํ์ฉํด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋ฌด๊ฑฐ์ด ์์ ์ ๋ฐ๋์ ๋ณ๋ ์ค๋ ๋๋ก ๋ถ๋ฆฌํฉ๋๋ค.
์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๋ง์คํฐํ๋ฉด ์ ์ ์ธ UI์ ์๋ช ๋ ฅ์ ๋ถ์ด๋ฃ์ ์ ์์ต๋๋ค.